from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
import random

def simulate_browser_behavior(query="林则徐相关的故事"):
    """
    使用 Selenium 模拟正常人浏览浏览器的行为。
    :param query: 搜索关键词
    """
    try:
        # 设置 Edge 浏览器驱动路径
        edge_driver_path = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"  # 替换为你的 Edge 驱动路径
        driver = webdriver.Edge(executable_path=edge_driver_path)

        # 打开百度首页
        driver.get("https://www.baidu.com")
        print("已打开百度首页")

        # 等待页面加载
        time.sleep(random.uniform(2, 5))  # 模拟随机等待时间

        # 输入搜索关键词
        search_box = driver.find_element(By.ID, "kw")  # 百度搜索框的 ID 是 "kw"
        search_box.send_keys(query)
        print(f"已输入搜索关键词：{query}")

        # 模拟按下回车键
        search_box.send_keys(Keys.RETURN)
        print("已按下回车键进行搜索")

        # 等待搜索结果加载
        time.sleep(random.uniform(3, 7))

        # 获取搜索结果链接
        search_results = driver.find_elements(By.XPATH, '//div[@class="result"]//h3/a')
        if not search_results:
            print("未找到搜索结果")
            return

        # 随机选择一个搜索结果并点击
        result_to_click = random.choice(search_results)
        print(f"正在点击链接：{result_to_click.text}")
        result_to_click.click()

        # 等待新页面加载
        time.sleep(random.uniform(3, 7))

        # 切换到新打开的标签页（如果有的话）
        driver.switch_to.window(driver.window_handles[-1])

        # 模拟滚动页面
        scroll_pause_time = random.uniform(1, 3)
        scroll_steps = random.randint(3, 6)  # 滚动次数
        for _ in range(scroll_steps):
            driver.execute_script(f"window.scrollBy(0, {random.randint(300, 800)});")
            time.sleep(scroll_pause_time)
        print("已模拟滚动页面")

        # 停留一段时间后返回上一页
        time.sleep(random.uniform(5, 10))
        driver.back()
        print("已返回上一页")

        # 继续浏览其他内容
        time.sleep(random.uniform(3, 7))

        # 关闭浏览器
        driver.quit()
        print("已关闭浏览器")

    except Exception as e:
        print(f"操作失败: {e}")


if __name__ == "__main__":
    # 搜索关键词
    search_query = "林则徐相关的故事"

    # 执行模拟浏览行为
    simulate_browser_behavior(search_query)
